package main

import "fmt"

/**
冒泡排序 时间复杂度O(n²)
口诀
- 外层循环 n-1
- 内层循环 n-1-i
- 两两比较做交换
 */
func main()  {
	arr := []int{3,1,7,9,5,6,8,0}
	bubbleSort(arr)
	fmt.Println(arr)
}

/**
  外层第一次自循环 i=0 内部循环8-1-0=7次 ,把最大的值9放到最后
  外层第二次循环 i=1 内部循环8-1-1=6次，把剩余最大的值8放到倒数第二位
  ....
 */
func bubbleSort(arr []int)  {
	for i := 0; i < len(arr)-1; i++ {
		for j := 0; j < len(arr)-1-i; j++ {
			if arr[j]>arr[j+1]{
				tmp := arr[j]
				arr[j] = arr[j+1]
				arr[j+1] = tmp
			}
		}
	}
}
